xxxxxxxxxxSELECT prop.p_valueFROM Properties propJOIN Haltestelle h ON h.id = prop.halt_idWHERE h.name = 'Marktplatz';xxxxxxxxxxSELECT h.nameFROM Haltestelle hLEFT JOIN Properties prop ON h.id = prop.halt_idWHERE prop.halt_id IS NULL;xxxxxxxxxxSELECT halt.name, prop.p_key, COUNT(DISTINCT(prop.p_value))FROM Haltestelle haltJOIN Properties prop ON prop.halt_id = halt.idGROUP BY prop.p_key, halt.nameHAVING COUNT(DISTINCT(prop.p_value)) > 1;xxxxxxxxxxCREATE VIEW Gleise ASSELECT halt.name, prop.p_valueFROM Haltestelle haltLEFT JOIN Properties prop ON halt.id = prop.halt_id AND prop.key = 'Anzahl Gleise';xxxxxxxxxxSELECT halt.nameFROM Properties propJOIN Haltestelle halt ON halt.id = prop.halt_idGROUP BY prop.halt_idm halt.nameORDER BY COUNT(*) DESCLIMIT 3;xxxxxxxxxxSELECT halt_1.name, halt_2.nameFROM Haltestelle halt_1, Haltestelle halt_2WHERE halt_1.id != halt_2.id AND halt_1.zone = 1 AND halt_2.zone = 1Ein Schlüssel Kandidat der Relation
die Hülle alle Attribute der Relation enthält und
welche Minimal ist
Ein spezieller/konkret ausgewählter Schlüsselkandidat
Fremdschlüssel sind bereits implizit über Beziehungen modelliert
da wir nicht alle Operationen aus
Ergänzung um mindestens drei Kanten.
Bei hinzunahme von
alternativ: es fehlt die Verbindung von
Bei hinzunahme von
wir haben keinen Zyklus, daher Partielle Ordnung
alle Operationen aus den Transaktionen kommen vor
alle partiellen Ordnungen aus
mit der Ergänzung von
mit der Ergänzung von
bspw. ist
mit der Ergänzung von
mit der Ergänzung von
mit der Ergänzung von
mit der Ergänzung von
bspw. ist
Hier ist nochmal visuell gezeigt, wieso wir keine vollständige Historie haben (das 3. Kriterium ist verletzt).
Acid steht für:
Atomicity
Consisitency
Isolation
Durability
lost update verletzt isolation, da mehrere Transaktionen miteinander interagieren
dirty read verletzt
isolation, da mehrere Transaktionen miteinander interagieren
consistency, da die Daten auf der Client-Site nicht konsistent sind
Wir nehmen eine generelle From von "dirty read" und zeigen, dass
Da
Für diese Sequenz halten wir fest:
Die foglende Sequenz ist ein generelle From von "Lost Update" und möglich in
da kein read vorkommt, ist
Wir können aber nicht
value ist keine Zahl
xxxxxxxxxxSELECT halt.nameFROM Properties propJOIN Haltestelle halt ON halt.id = prop.halt_idWHERE prop.p_key = 'Anzahl Gleise' AND (prop.value = ‘0’ OR prop.value = ‘1’ OR prop.value = ‘2’)
xxxxxxxxxxSelect * from prop where halt_id not in (select distinct id from halt)halt_id: 0 ist der einzige Wert de in Haltestellle nicht vorkommt
Es sollen alle in Properties enthalten Informationen ausgegeben werden von Einträgen die zwar eine halt_id haben, aber keine (aktive) Haltestelle.
Es werden nun alle Properties ausgegeben, falls es mindestens eine Haltestelle gibt mit halt_id in Properties.
xxxxxxxxxxCREATE TABLE prop_cleaned( halt_id INT NOT NULL, value varchar(255) NOT NULL, key varchar(255), PRIMARY KEY(halt_id, key), FOREIGN KEY(halt_id) REFERENCES Haltestelle(id));xxxxxxxxxxINSERT INTO prop_clenead (halt_id, p_key, p_value)SELECT p.halt_id, p.key, p.valueFROM Properties pWHERE EXISTS (... ) AND p.value IS NOT NULL;xxxxxxxxxxSELECT halt.zoneFROM Haltestelle haltGROUP BY halt.zoneHAVING halt.zone = (SELECT MAX(h.zone) FROM Haltestelle h);xxxxxxxxxxSELECT halt.name, p_s.key, p_s.valueFROM ( SELECT prop.halt_id, prop.key, p_kvv.value FROM ( SELECT prop.halt_id, prop.value FROM prop_clenead prop WHERE prop.p_value='gehört KVV' ) p_kvv JOIN prop_clenead prop ON prop.halt_id = p_kvv.halt_id WHERE prop.key = 'Anzahl Gleise') p_sJOIN Haltestelle halt ON halt.id = p_s.halt_idSelect * from prop where halt_id not in (select distinct id from halt)
Relation R(A, B, C, D, E, F) und funktionale Abhängigkeiten.
Gegeben sei die Relation R(A, B, C, D, E, F) mit den folgenden funktionalen Abhängigkeiten:
Schlüsselkandidaten sind Attributmengen, für welche
ihre Attributhülle alle Attribute der Relation abdeckt und welche
minimal sind (jede Hülle die mit dem Weglassen von Attributen gebildet wird, enthält nicht mehr alle Attribute aus
Es handelt sich bei
die Attributhülle von
Minimalität ist
Die 1.-NF ist die höchste Normalform, da eine partielle Abhängigkeit gibt:
Primattribute: C, D
Nicht-Primattribute: A, B, E, F
Voll-Funktionale Abhängigkeit:
Relation R(A, B, C, D) und funktionale Abhängigkeiten.
Gegeben sei die Relation R(A, B, C, D) . Alle Attribute sind atomar. R mit den funktionalen Abhängigkeiten F ist in 2NF.
Schlüsselkandidaten:
Primattribute:
Nicht-Primattribute:
Schlüsselkandidaten:
Primattribute:
Nicht-Primattribute:
Schlüsselkandidaten:
Primattribute:
Nicht-Primattriburte:
alternativ:
alternativ:
alternativ:
Der/Die See/Seen mit der geringsten Tiefe. 1. wird abgezogen von 2.:
Die Namen aller Seen
Die Namen aller Seen außer den See mit der geringsten Tiefe
Wir benötigen die Katen
Bei
partielle Ordnung der Operationen
die 3. Bedingung ist ebenfalls erfüllt, da es keine konfligierenden Operationen gibt
Damit
Zwei Operationen
+ ausgeben des Attributs der Entität geht schneller
+ weniger Relationen
- eventuel. viele Nullwerte die grundlos Speicher vebrauchen (falls Fremdschlüssel mit NULL-Wert zugelassen sind)
xxxxxxxxxxSELECT COUNT(DISTINCT i.buyer_id) AS anzahl_intel_interessierterFROM interest iJOIN stock s ON i.stock_id = s.idWHERE s.name = 'Intel';xxxxxxxxxxSELECT b.idFROM ( SELECT i.buyer_id, SUM(i.quantity * s.price) AS total FROM interest i JOIN stock s ON s.id = i.stock_id GROUP BY i.buyer_id) b_pJOIN buyer b ON b.id = b_p.buyer_idWHERE b_p.total > b.name;xxxxxxxxxxSELECT m_i.stock_id, m_i.total, s.priceFROM ( SELECT i.stock_id, COUNT(i.stock_id) as total FROM interest i GROUP BY i.stock_id HAVING COUNT(i.stock_id) > 1) m_iJOIN stock s ON s.id = m_i.stock_id;uebungsleiter will GROUP BY fuer Attribute in ORDER BY haben
xxxxxxxxxxSELECT DISTINCT(s.price)FROM stock sGROUP BY s.priceORDER BY s.price ASCLIMIT 1 OFFSET 1xxxxxxxxxxSELECT s.id, i.buyer_idFROM stock sLEFT JOIN interest i ON i.stock_id = s.idWHERE i.buyer_id IS NULL;
Das Ergebnis des Synthesealgorithmus ist somit
Gegeben sei die Relation S(A, B, C, D, E) mit den folgenden funktionalen Abhängigkeiten:
Die Attribute seien alle atomar. Betrachten Sie als mögliche Normalformen 1NF, 2NF, 3NF und BCNF.
Schlüsselkandidaten:
Daher sind die beiden Schlüsselkandidaten auch die einzigen
Was ist die höchste Normalform, die S erfüllt? Begründen Sie.
Schlüsselkandidat(en):
Primattribute:
Nicht-Primattribute:
1NF: Ist gegeben durch die atomarität der Attribute
2NF: Ist nicht gegeben, da es eine partielle Abhängigkeit gibt (
Gegeben seien die folgenden Zerlegungen von S (mit
Explizite Angabe der funktionalen Abhängigkeiten:
Wir sehen in
damit sind alle in BCNF
Schlüsselkandidat(en):
Primattribute:
Nicht-Primattribute:
Damit lässt sich nun die 3.-Normalform bestimmen:
erste Normalform ist gegeben, da alle Attribute atomar sind
zweite Normalform ist gegeben, da keine partiellen Abhängigkeiten vorliegen
dritte Normalform ist gegeben, da es keine transitive Abhängigkeiten gibt
BCNF ist nicht gegeben, da
Ist BCNF, da
Nicht Abhängigkeitstreu, da
Verbundtreu lässt sich zeigen durch mehrfaches Anwenden des einfachen Kriteriums
Sei nun
das "Andere Kriterium" lässt sich nicht anwenden, da abhängigkeitstreue nicht gegeben ist
Abhängigkeitstreu, da
Verbundtreu (nach "Andres Kriterium"), da
Transaktion ist partielle Ordnung mit Ordnungsrelation
Wenn es sich bei
Wenn
Aus Konfliktäquivalenz folgt nicht, dass die Rücksetzbarkeitsklassen übereinstimmen.
Um
Alle committed Inhalte Konsistent sind
Kaskadierendes Rücksetzen verhindert wird
Verhindern von Dirty Reads, Unrepeatable Reads, Lost Updates
Gegeben sind die folgenden partiellen Historien:
serialisierbar, da es keinen Zyklen gibt im Serialisierbakeitsgraphen
nicht serialisierbar, da es einen Zyklus im Serialisierbarkeitsgraphen gibt
nicht serialisierbar, da es einen Zyklus im Serialisierbarkeitsgraphen gibt
Es handelt sich nicht um eine Transaktion, da entweder
Es handelt sich um eine Transaktion, da alle Kriterien erfüllt sind.
Es handelt sich nicht um eine Transaktion, da
Es handelt sich um eine Transaktion, da alle Kriterien erfüllt sind.
serielle Historie:
serielle Historie:
Gegeben seien die folgenden Transaktionen
sowie die Schedules